package ru.spb.nicetu.altx.mnemo.node;

import ru.spb.nicetu.altx.mnemo.cell.INodeCell;
import ru.spb.nicetu.altx.mnemo.cell.ManagedNodeCell;

/**
 * класс, описывающий все узлы типа "Загрузить из памяти"
 * 
 * @author arkady
 * 
 */
public class LoadMemoryTaskNode extends TaskNode implements IMemoryTaskNode {

  private static final long serialVersionUID = -31909825309411220L;

  /**
   * Конструктор
   * 
   * @param name
   *          - имя узла
   * @param simpleFuncClassName
   *          - имя класса функционального элемента
   */
  public LoadMemoryTaskNode(String name, String simpleFuncClassName) {
    super(name, simpleFuncClassName);
  }

  public String getMemoryValueClassName() {
    INodeCell nodeCell = getAllOutputCells().get(0);

    if (nodeCell == null)
      return null;

    // Вычисляем тип значения, которое должно хранится в ячейке
    String valueClassName = nodeCell.getValueClassName();
    return valueClassName;
  }

  public INodeCell getMemoryNodeCell() {
    INodeCell nodeCell = null;

    if (!getAllSettingCells().isEmpty()) {
      nodeCell = getAllSettingCells().get(0);
      if (nodeCell instanceof ManagedNodeCell)
        return nodeCell;
    } else if (getAllInputCells().size() > 0) {
      nodeCell = getAllInputCells().get(0);
      // return nodeCell;
      if (nodeCell instanceof ManagedNodeCell)
        return nodeCell;
    }
    return null;
  }

}
